package com.bone.workstation.service;

import java.util.List;
import java.util.Map;

import com.bone.com.service.ComLogService;
import com.bone.page.Page;
import com.bone.vo.EmployeeRoleVO;
import com.bone.vo.ModuleMenu;
import com.bone.vo.RoleModuleVO;
import com.bone.workstation.dao.EmployeeDAO;
import com.bone.workstation.dao.EmployeeRoleDAO;
import com.bone.workstation.dao.ModuleDAO;
import com.bone.workstation.dao.RoleDAO;
import com.bone.workstation.dao.RoleModuleDAO;
import com.bone.workstation.po.Employee;
import com.bone.workstation.po.Module;
import com.bone.workstation.po.Role;

public interface ApplicationService {

	/**
	 * 该用户的角色模块.
	 * @param user
	 * @return
	 */
	List<ModuleMenu> findMyModuleList(Long employeeId);

	/**
	 * 取属于该角色的模块.
	 * @param parameter
	 * @return
	 */
	List<RoleModuleVO> queryRoleModuleVoListByParam(
			Map<String, String> map);

	//-------------role --------------------------------------------------------	
	/**
	 * 取符合条件的模块的数量.
	 * @param para
	 * @return
	 */
	Long queryRoleCountByParam(Map<String, Object> para);

	/**
	 * 取符合条件的模块的LIST.
	 * @param para
	 * @return
	 */
	List<Role> queryRolePageByParam(Map<String, Object> para);

	/**
	 * 角色数据列表(List).
	 * @param role
	 * @return
	 */
	List<Role> queryRoleListByParam(Role role);

	/**
	 * 根据角色的ID取角色的信息 .
	 * @param parameter
	 * @return
	 */
	Role queryRoleByRoleId(Long roleId);

	/**
	 * 保存或者修改角色.	
	 * @param module
	 * @return
	 */
	boolean saveOrUpdateRole(Role role,String operatorId);


	/**
	 * 取符合条件的模块的数量.
	 * @param para
	 * @return
	 */
	Long queryModuleCountByParam(Map<String, Object> para);

	/**
	 * 取符合条件的模块的LIST.
	 * @param para
	 * @return
	 */
	List<Module> queryModuleListByParam(Map<String, Object> para);

	/**
	 * 根据模块的ID取模块的信息 .
	 * @param parameter
	 * @return
	 */
	Module queryModuleByModuleId(Long moduleId);

	/**
	 * 保存或者修改模块.	
	 * @param module
	 * @return
	 */
	boolean saveOrUpdateModule(Module module, String operatorId);

	/**
	 * 根据登录名和密码查询用户.
	 * @param account
	 * @param password
	 * @return
	 */
	Employee queryEmployeeByParam(Employee Employee);


	/**
	 * 取符合条件的后台用户数据的数量.
	 * @param para
	 * @return
	 */
	Long queryEmployeeCountByParam(Map<String, Object> para);
	/**
	 * 取符合条件的后台用户数据的LIST.
	 * @param para
	 * @return
	 */
	List<Employee> queryEmployeePageByParam(Map<String, Object> para);
	
	/**
	 * 取用户的角色列表数据.
	 * @param parameter
	 * @return
	 */
	List<Employee> queryEmployeeListByParam(Map<String, Object> para);
	/**
	 *  按PK取Employee.
	 * @param parameter
	 * @return
	 */
	Employee queryByEmployeeId(Long employeeId);

	/**
	 * 保存/修改雇员信息.
	 * @param employee
	 * @return
	 */
	boolean saveOrUpdateEmployee(Employee employee);

	/**
	 * 取该用户的角色.
	 * @param employeeId
	 * @return
	 */
	List<EmployeeRoleVO> queryEmployeeRoleByEmployeeId(
			Long employeeId);

	
	RoleDAO getRoleDAO();

	void setRoleDAO(RoleDAO roleDAO);

	RoleModuleDAO getRoleModuleDAO();

	void setRoleModuleDAO(RoleModuleDAO roleModuleDAO);

	ModuleDAO getModuleDAO();

	void setModuleDAO(ModuleDAO moduleDAO);

	EmployeeDAO getEmployeeDAO();

	void setEmployeeDAO(EmployeeDAO employeeDAO);

	EmployeeRoleDAO getEmployeeRoleDAO();

	void setEmployeeRoleDAO(EmployeeRoleDAO employeeRoleDAO);

	void setComLogService(ComLogService comLogService);

	ComLogService getComLogService();

}